/*
 * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

/*
 */

package java.nio.channels;

import java.io.IOException;


/**
 * 可以异步关闭和中断的通道。
 *
 * <p> 实现此接口的通道是异步关闭的:
 * 如果一个线程在可中断通道上的I/O操作中被阻塞，
 * 那么另一个线程可能会调用该通道的关闭方法。
 * 这将导致阻塞的线程接收一个AsynchronousCloseException异常。
 *
 * <p> 实现此接口的通道也是可中断的:
 * 如果一个线程在可中断通道上的I/O操作中被阻塞，那么另一个线程可能会调用被阻塞线程的interrupt方法。
 * 这将导致通道被关闭，阻塞线程接收一个ClosedByInterruptException异常，并且阻塞线程的中断状态被设置。
 *
 * <p> 如果一个线程的中断状态已经设置，它调用一个阻塞的I/O操作，然后通道将被关闭，
 * 线程将立即收到一个ClosedByInterruptException;
 * 它的中断状态将保持设置。
 *
 * <p> 通道在(且仅在)实现此接口时支持异步关闭和中断。
 * 如果有必要，可以在运行时通过instanceof操作符进行测试。
 *
 *
 * @author Mark Reinhold
 * @author JSR-51 Expert Group
 * @since 1.4
 */

public interface InterruptibleChannel
    extends Channel
{

    /**
     * 关闭这个通道。
     *
     * <p> 当前在此通道上的I/O操作中阻塞的任何线程都将接收到一个AsynchronousCloseException异常。
     *
     * <p> 否则，此方法的行为将与Channel接口所指定的完全相同。</p>
     *
     * @throws  IOException  If an I/O error occurs
     */
    public void close() throws IOException;

}
